package com.ruoyi.make.mapper;

import java.util.List;

import com.ruoyi.make.domain.*;

/**
 * 生产领料Mapper接口
 * 
 * @author ruoyi
 * @date 2024-07-16
 */
public interface ScllProductionMaterialRequisitionMapper 
{
    /**
     * 查询生产领料
     * 
     * @param scllId 生产领料主键
     * @return 生产领料
     */
    public ScllProductionMaterialRequisition selectScllProductionMaterialRequisitionByScllId(Long scllId);

    /**
     * 查询生产领料列表
     * 
     * @param scllProductionMaterialRequisition 生产领料
     * @return 生产领料集合
     */
    public List<ScllProductionMaterialRequisition> selectScllProductionMaterialRequisitionList(ScllProductionMaterialRequisition scllProductionMaterialRequisition);


    /**
     * 查询生产领料单
     *
     * @param lldWlAndDw 生产领料
     * @return 生产领料集合
     */
    public List<LldWlAndDw> selectLldWlAndDwList(LldWlAndDw lldWlAndDw);

    /**
     * 查询哪些仓库有这个物料
     *
     * @param wlCode 生产领料
     * @return 生产领料集合
     */
    public List<CkAndKcxq> CkByWlCode(String wlCode);


    /**
     * 领料
     *
     * @param scllMaterialRequiredRescord 生产领料
     * @return 结果
     */
    public int insertScllMaterialRequiredRescord(ScllMaterialRequiredRescord scllMaterialRequiredRescord);



    /**
     * 进入待审核
     *
     * @param scllId 生产领料
     * @return 结果
     */
    public int updateLldState(Long scllId);

    /**
     * 新增生产领料
     * 
     * @param scllProductionMaterialRequisition 生产领料
     * @return 结果
     */
    public int insertScllProductionMaterialRequisition(ScllProductionMaterialRequisition scllProductionMaterialRequisition);


    /**
     * 查询领料单下的物料
     *
     * @param scllId 生产领料
     * @return 结果
     */
    public List<ScllMaterialRequiredRescord> selectRequiredMaterialByScllId(Long scllId);


    /**
     * 查询仓库详情
     *
     * @param wlCode,ckCode 物料以及仓库编码
     * @return 结果
     */
    public List<KcxqInventoryDetails> selectInventoryDetailsByWlAndCk(String wlCode,String ckCode);

    /**
     * 修改领料单状态
     *
     * @param scllId 物料以及仓库编码
     * @return 结果
     */
    public int updateMaterialRequisitionState(Long scllId);

    /**
     * 修改领料单下物料的来料批次
     *
     * @param scllMaterialRequiredRescord 物料以及仓库编码
     * @return 结果
     */
    public int updateMaterialRequiredRescordLlCode(ScllMaterialRequiredRescord scllMaterialRequiredRescord);

    /**
     * 修改领料状态
     *
     * @param gdCode 产品编码
     * @return 结果
     */
    public int updateLlStatus(String gdCode);

    /**
     *  减去库存
     *
     * @param kcxqInventoryDetails 物料以及仓库编码
     * @return 结果
     */
    public int updateInventoryDetailsHaveNum(KcxqInventoryDetails kcxqInventoryDetails);

    /**
     * 修改生产领料
     * 
     * @param scllProductionMaterialRequisition 生产领料
     * @return 结果
     */
    public int updateScllProductionMaterialRequisition(ScllProductionMaterialRequisition scllProductionMaterialRequisition);

    /**
     * 删除生产领料
     * 
     * @param scllId 生产领料主键
     * @return 结果
     */
    public int deleteScllProductionMaterialRequisitionByScllId(Long scllId);

    /**
     * 批量删除生产领料
     * 
     * @param scllIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteScllProductionMaterialRequisitionByScllIds(Long[] scllIds);

    /**
     * 批量删除${subTable.functionName}
     * 
     * @param scllIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteLldWlAndDwByLldhs(Long[] scllIds);
    
    /**
     * 批量新增${subTable.functionName}
     * 
     * @param lldWlAndDwList ${subTable.functionName}列表
     * @return 结果
     */
    public int batchLldWlAndDw(List<LldWlAndDw> lldWlAndDwList);
    

    /**
     * 通过生产领料主键删除${subTable.functionName}信息
     * 
     * @param scllId 生产领料ID
     * @return 结果
     */
    public int deleteLldWlAndDwByLldh(Long scllId);
}
